An Adaptive Compilation Framework for Generic Data-Parallel Array Programming
نویسندگان
چکیده
Generic array programming abstracts from structural properties of arrays, such as rank (number of axes/dimensions) and shape (number of element along each axis/dimension). This allows for abstract program specifications and, as such, is desirable from a software engineering perspective. However, generic programming in this sense does have an adverse effect on runtime performance when executed naively. Static compiler analyses and transformations aim at reconciling software engineering desires for generic code with runtime performance requirements. However, they are bound to fail whenever the required information is not available until runtime. We propose a compilation framework that overcomes the inherent limitations of static analysis by incrementally adapting a running program to the structural properties of the arrays it operates on. This is achieved by partial recompilation of code at runtime, when all structural properties of arrays are known, and dynamic relinking of the running program with dynamically generated code. We sketch out the general compilation framework architecture and discuss implementation aspects.
منابع مشابه
A Advances in Dynamic Compilation for Functional Data Parallel Array Processing
Data-parallel processing of multi-dimensional arrays is characterized by a fundamental trade-off between software engineering principles on the one hand and runtime performance concerns on the other hand. Whereas the former demand code to be written in a generic style abstracting from structural properties of arrays as much as possible, the latter require an optimizing compiler to have as much ...
متن کاملAsynchronous adaptive optimisation for generic data-parallel array programming
Programming productivity very much depends on the availability of basic building blocks that can be reused for a wide range of application scenarios and the ability to define rich abstraction hierarchies. Driven by the aim for increased re-use, such basic building blocks tend to become more and more generic in their specification: structural as well as behavioural properties are turned into par...
متن کاملAdaptive structured parallelism for distributed heterogeneous architectures: a methodological approach with pipelines and farms
Algorithmic skeletons abstract commonly used patterns of parallel computation, communication, and interaction. Based on the algorithmic skeleton concept, structured parallelism provides a high-level parallel programming technique that allows the conceptual description of parallel programs while fostering platform independence and algorithm abstraction. This work presents a methodology to improv...
متن کاملSac - From High-Level Programming with Arrays to Efficient Parallel Execution
SaC is a purely functional array processing language designed with numerical applications in mind. It supports generic, high-level program specifications in the style of Apl. However, rather than providing a fixed set of built-in array operations, SaC provides means to specify such operations in the language itself in a way that still allows their application to arrays of any rank and size. Thi...
متن کاملOn A Generic Parallel Collection Framework
As the number of cores increases in modern multiprocessors, it is becoming increasingly di cult to write general purpose applications that e ciently utilize this computing power. This remains an open research problem. Most applications manipulate structured data. Modern languages and platforms provide collection frameworks with basic data structures like lists, hashtables and trees. These data ...
متن کامل